package br.pb.sistcomp.entity;

import java.util.Date;

/**
 * Class that represents an entity in the system
 *
 * @author jefferson Bello, Jefferson.bello@dce.ufpb.br
 * @version 1.0
 *
 * Copyright (C) 2011 SistComp.
 */
public class CartaoDeCredito implements I_FormaDePagamento {

    private String numeroDoCartao;
    private String nomeDoTitular;
    private Date diaDaValidade;
    private Date anoDaValidade;
    private String codigoDeSeguranca;
    private int numeroDeParcelas;

    /**
     * Construtor Default da classe cartão de crédito
     */
    public CartaoDeCredito() {
    }

    /**
     * Contrutor da classe Cartão de Crédito
     * @param numeroDoCartao 
     * @param nomeDoTitular 
     * @param diaDaValidade
     * @param anoDaValidade
     * @param codigoDeSeguranca
     * @param numeroDeParcelas 
     */
    public CartaoDeCredito(String numeroDoCartao, String nomeDoTitular, Date diaDaValidade, Date anoDaValidade, String codigoDeSeguranca, int numeroDeParcelas) {
        this.numeroDoCartao = numeroDoCartao;
        this.nomeDoTitular = nomeDoTitular;
        this.diaDaValidade = diaDaValidade;
        this.anoDaValidade = anoDaValidade;
        this.codigoDeSeguranca = codigoDeSeguranca;
        this.numeroDeParcelas = numeroDeParcelas;
    }

    /**
     * Metodo responsavel em calcular o valor pago pelo cliente usando cartão de credito
     * @param valorDaCompra float: valor que representa o valor da compra.
     * @return o valor da parcela
     */
    @Override
    public float getValorDoPagamento(float valorDaCompra) {
        return (valorDaCompra / this.numeroDeParcelas);

    }

    /**
     * Metodo responsavel em informar qual foi o tipo de pagamento da compra selecionada    
     * @return String que contem o tipo de pagamente da compra.
     */
    @Override
    public String getTipoDePagamento() {
        return "CartaoDeCredito";
    }

    
    public Date getAnoDaValidade() {
        return anoDaValidade;
    }

    public String getCodigoDeSeguranca() {
        return codigoDeSeguranca;
    }

    public Date getDiaDaValidade() {
        return diaDaValidade;
    }

    public String getNomeDoTitular() {
        return nomeDoTitular;
    }

    public String getNumeroDoCartao() {
        return numeroDoCartao;
    }

    public int getNumeroDeParcelas() {
        return numeroDeParcelas;
    }
}
